首页 > 试题广场 >

进制转换

[编程题]进制转换
  • 热度指数:980459 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的十六进制数,输出其对应的十进制表示。

\hspace{15pt}在本题中,十六进制数的格式为:\texttt{0x} 开头,后跟若干个十六进制数字(保证为 \texttt{0-9}\texttt{A-F} 中的一个)。其中,\texttt{A-F} 依次代表十进制中的 10 \sim 15

输入描述:
\hspace{15pt}在一行上输入一个十六进制数 s,代表待转换的十六进制数,格式见题干。保证 s 转化得到的十进制数 x 的范围为 1 \leqq x \lt 2^{31}


输出描述:
\hspace{15pt}在一行上输出一个整数,代表 s 对应的十进制数。
示例1

输入

0xFA93

输出

64147

说明

\hspace{15pt}回忆十六进制转化为十进制的方法:从右往左,将第 i 位乘以 {\color{orange}{16^i}},然后求和。

\hspace{15pt}在这个样例中,\texttt{0xFA93} 的第 0 位是 \texttt{3},第 1 位是 \texttt{9},第 2 位是 \texttt{A},第 3 位是 \texttt{F},因此 \texttt{0xFA93} = 3 \times {\color{orange}{16^0}} + 9 \times {\color{orange}{16^1}} + 10 \times {\color{orange}{16^2}} + 15 \times {\color{orange}{16^3}} = 64147
s = input()
l = s[::-1]
x = 0
d = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}
for i in range(len(l)):
    if l[i] in d:
        x += d[l[i]] * (16**i) 
    else:
        continue
print(x)

发表于 2025-06-10 21:12:30 回复(0)
import sys

def format_hex(input_str:str):
    hash_map = {
        "A":10,
        "B":11,
        "C":12,
        "D":13,
        "E":14,
        "F":15
    }
    strip_str = input_str[2:][::-1]
    sum = 0
    for i in range(len(strip_str)):
        s = strip_str[i]
        if s not in hash_map:
            sum+= int(s)*16**i
        else:
            sum+= hash_map.get(s)*16**i
    return sum

s = input()
print(format_hex(s))
        
发表于 2025-04-09 12:07:27 回复(0)
s = str(input())
s = s[2:]
dic = {"A": 10, "B": 11, "C": 12, "D": 13, "E": 14, "F": 15}
n = len(s)
q = [i for i in range(n)]
s10i = []
for i in range(n):
    if s[-1 - i].isdigit():
        s10i.append(eval(s[-1 - i]))
    elif s[-1 - i] in dic.keys():
        s10i.append(dic[s[-1 - i]])

s10 = 0
for i in range(n):
    s10 += s10i[i] * 16 ** i

print(s10)


发表于 2024-12-16 23:38:27 回复(0)
print(int(input()[2:],16))  
发表于 2024-10-24 16:35:02 回复(0)
import sys

def hex_to_decimal(hex_str):
    for hex_str in sys.stdin:       #读取多行输入
        hex_str = hex_str.strip()   #去除末尾空白字符或换行
        if hex_str == " ":          #判断是否为空字符串
            continue
        decimal = int(hex_str,16)   #十六进制转十进制。int转10,16/8/2分别代表十六、八、二进制
        return decimal

if __name__ == "__main__":      #调用主函数
   hex_input = "0x2C"
   print(hex_to_decimal(hex_input))
发表于 2024-03-23 15:29:26 回复(0)
hexnum = input().split('x')[1]
num_dict = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}

hexnum = hexnum.upper()
hexnum_list = []
for i in hexnum:
hexnum_list.append(num_dict[i])

j = 0
for i in range(len(hexnum_list)):
j+= pow(exp= (len(hexnum_list)-i-1),base = 16)*hexnum_list[i]

print(j)

发表于 2024-01-07 04:43:37 回复(0)
while True:
    # 转十进制 int(s,要转换的进制数) eg. 16转10 int(s,16) 、8转10 int(s,8)
    # 十进制转二进制 bin(s)
    try:
        print(int(input().strip(),16))
    except:
        break

发表于 2023-11-09 18:42:26 回复(0)
aimstr = input()
rel = int(aimstr,16)
print(rel)
发表于 2023-10-24 23:47:28 回复(0)
while True:
    try:
        L = input().split()
        for s in L:
            print(int(s,16))
    except:
        break

发表于 2023-03-17 15:04:46 回复(0)
import sys

for line in sys.stdin:
    if line != '\n':
        a = line.split()
result = 0
string = a[0][::-1]
for i in range(len(string)-2):
    if string[i].isdigit():
        result = result + int(string[i])*16**(i)
    else:
        result = result + (ord(string[i])-55)*16**(i)
print(result, end='\n')

发表于 2023-03-09 17:39:50 回复(0)
while True:
    try:
        print(int(input(),16))
    except:
        break
发表于 2022-09-10 07:26:32 回复(0)
i = int(input(), 16)
print(i)
直接在输入的时候就将字符串的16进制转为10进制
发表于 2022-09-08 11:18:01 回复(0)
importsys
str = sys.stdin.readline().strip().split('x')[1]
result = 0
fori in range(len(str)):
    num = str[::-1][i]
    ifnum == 'A':
        num = 10
    elif num == 'B':
        num = 11
    elif num == 'C':
        num = 12
    elif num == 'D':
        num = 13
    elif num == 'E':
        num = 14
    elif num == 'F':
        num = 15
    else:
        num = int(num)
    result = result + num*(16**i)
 
print(result)
发表于 2022-09-05 15:45:47 回复(0)
s = input()
s = list(s)
#倒序,并排除前两位十六进制符号
s = s[-1:1:-1]
count = 0
dic = {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,"A":10,"B":11,"C":12,"D":13,"E":14,"F":15}
for index,items in enumerate(s):
    count += dic[items] * (16**index)
print(count)
发表于 2022-09-01 20:17:31 回复(0)
num=input()
print(int(num,16))
发表于 2022-08-27 22:07:11 回复(0)
处理多行输入可以用while True 里面再用异常捕捉结构
while True:
    try:
        print(int(input(), 16))
    except:
        break

发表于 2022-08-24 12:38:08 回复(0)
str=input()
print(int(str,16))
发表于 2022-08-18 20:12:39 回复(0)

问题信息

难度:
110条回答 169061浏览

热门推荐

通过挑战的用户

查看代码
进制转换